{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "from sklearn.mixture import GMM, VBGMM\n",
    "from sklearn.cross_validation import train_test_split\n",
    "from sklearn.cross_validation import cross_val_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def rand_covariance(rng, n_features):\n",
    "    A = rng.randn(n_features, n_features)\n",
    "    return A.dot(A.T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "rng = np.random.RandomState(42)\n",
    "n_features = 30\n",
    "center_sizes = [800, 200, 200, 500, 100]\n",
    "n_samples = sum(center_sizes)\n",
    "\n",
    "\n",
    "X = np.vstack([\n",
    "    rng.multivariate_normal(rng.uniform(-1, 1, n_features) * 10,\n",
    "                            rand_covariance(rng, n_features),\n",
    "                            size=n_samples_per_center)\n",
    "    for n_samples_per_center in center_sizes\n",
    "])\n",
    "\n",
    "X_train, X_test = train_test_split(X, test_size=0.5, random_state=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x109742b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:, 0], X[:, 1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 -85830.0943779 44.040947453\n",
      "2 -79267.9264715 112.496241173\n",
      "3 -77588.9837858 111.654825494\n",
      "4 -75896.9559892 59.1118075552\n",
      "5 -74823.9692635 995.689350362\n",
      "6 -74854.7959874 456.392334881\n",
      "7 -75299.6157818 487.202210032\n",
      "8 -75702.690181 403.087925554\n",
      "9 -76346.5812445 381.44715105\n",
      "10 -76927.3846589 544.482409156\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x109688b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_components = np.arange(1, 11)\n",
    "test_logliks = []\n",
    "train_logliks = []\n",
    "for i in n_components:\n",
    "#     gmm = VBGMM(n_components=i, covariance_type='full', alpha=1., random_state=0)\n",
    "    gmm = GMM(n_components=i, covariance_type='full', min_covar=1e-3, random_state=0)\n",
    "    test_loglik_folds = []\n",
    "    train_loglik_folds = []\n",
    "    for j in range(3):\n",
    "        X_train, X_test = train_test_split(X, test_size=0.5, random_state=j)\n",
    "        gmm.fit(X_train)\n",
    "        test_loglik_folds.append(gmm.score(X_test).sum())\n",
    "        train_loglik_folds.append(gmm.score(X_train).sum())\n",
    "    test_loglik = np.mean(test_loglik_folds)\n",
    "    print(i, test_loglik, np.std(test_loglik_folds))\n",
    "    test_logliks.append(test_loglik)\n",
    "    train_logliks.append(np.mean(train_loglik_folds))\n",
    "\n",
    "\n",
    "plt.plot(n_components, train_logliks, 'o-', label='train')\n",
    "plt.plot(n_components, test_logliks, 'o-', label='test')\n",
    "plt.legend(loc='best');"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
